====== Accéder visuellement à une machine distante via ssh ======
<note important> ceci est un brouillon à but perso (pour le moment) et en cours d'écriture</note>

===== Introduction =====

Après une installation chez des amis, bien souvent il me faut accéder à leur machine quelques temps après.\\
Pour se faire, j'ai pensé à [[:SSH]]((Secure SHell)) que je n'utilisais pas et le visionneur de bureau distant déjà installé [[:Vinagre]].\\
Celà me permet une prise en main graphique de la machine ([[:Vinagre]]) en sécurisant d'abord cette connexion ([[:SSH]])

<note>Pour la suite le serveur est la machine distante que l'on cherche à atteindre (le pc de l'ami quoi)\\
Le client est la machine qui prendra le contrôle (en gros mon pc)</note>

===== Pré-requis =====
==== Côté serveur ====

  * [[:tutoriel:comment_installer_un_paquet|Installer le paquet]] [[apt://openssh-server]] (pour rappel: sur la machine que l'on cherche à joindre)
<code>sudo apt-get install openssh-server</code> 
Dans un [[:terminal]] vérifier que le service est bien actif:
<code>status ssh</code>
si la réponse est "//**ssh start/running, process XXXX**//" (ou XXXX est un nombre) c'est que le service est bien actif sinon il faut le démarrer par:
<code>sudo service ssh start</code>ou
<code>sudo /etc/init.d/ssh start</code>

  * Connaitre son adresse IP du réseau local (pour une machine derrière une box):
<code>ifconfig | grep inet</code>(devrait donner une adresse du type 192.168.0.10)

  * Sur la box rediriger le port 22((pour le moment)) sur le pc 
<note>Sur la freebox tout se passe dans [[http://https://subscribe.free.fr/login/|l'interface de gestion de votre compte]].\\
Dans la section **Internet** sélectionner la partie **Configurer le routeur**.\\
Vérifier alors que le mode routeur est bien activé et dans le bas de cette page redirigé le port 22((ou autre)) vers l'adresse 192.168.1.XX:22 récupérée plus tôt.\\
Enregistrer ces nouveaux paramètres et de rebooter la freebox ensuite.\\
FIXME: UDP ou TCP ? moi j'ai mis les 2</note>

  * Connaitre son adresse IP hors réseau local en se rendant sur [[http://monip.org]] ou dans un [[:terminal]]:
<code>wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1</code>

  * Désactiver les effets graphiques : Système → Préférences → Apparences → Onglet "Effets" → cocher "Aucun".

  * Penser à modifier la configuration du fichier /etc/ssh/sshd_config. Pour en savoir plus, se reporter à la section [[vnc_via_ssh#securite|sécurité]].

==== Côté Client ====

__**Rien**__ tout est installé (un café si vous voulez :-)).

===== Première Connexion =====

  * Dans un [[:terminal]] saisir
<code>ssh -L 5900:localhost:5901 Login@Adresse-ip:Port</code>
**Login** est le nom de l'utilisateur qui se trouve sur le serveur.\\
**Adresse-ip** est l'adresse "internet" du serveur.\\
**Port** est le port indiqué à rediriger dans l'interface de gestion (donc 22 par défaut ou bien 2764 pour reprendre l'exemple ci-dessus).\\
L'option //**-L 5900:localhost:5901**// est facultative. C'est elle qui permet d'accéder au serveur graphique distant en passant par [[:ssh]]. Si vous comptez utiliser uniquement le [[:terminal]], vous pouvez retirer cette partie  \\

Vous devriez avoir une demande de confirmation la première fois pour valider votre connexion au serveur, puis le mot de passe du compte distant (donc le mot de passe du user sur le serveur) doit vous être demandé.\\
Vous êtes maintenant sur le serveur (= la machine de votre ami).

===== Et maintenant ? =====

Vous avez donc accès à la machine distante, le problème c'est que votre ami ne vois pas forcément ce que vous faites ou vous n'êtes pas très à l'aise avec la [[:tutoriel/console_ligne_de_commande|ligne de commande]].\\
Pour rappel, vous avez laissez ouvert le [[:terminal]] précédemment connecté.

==== Retour visuel de la ligne de commande ====

Sur le serveur, demander à l'utilisateur d'ouvrir un [[:screen]] avec le nom de son choix (exemple **pote**)
<code>screen -S pote</code>et de votre côté entrer dans le [[:terminal]] connecté
<code>screen -x pote</code>Ce que vous saisirez sera maintenant affiché en parallèle sur le [[:terminal]] distant (donc sous les yeux de votre ami).

==== Retour graphique de l'environnement ====

Si vous souhaiter accéder graphiquement au serveur, vérifier sur celui-ci que [[:vnc|**vino-server]] est bien dans les applications au démarrages donc bien actif:
<code>ps -ef | grep vino-server</code>si vous avez une ligne avec /usr/lib/vino/vino-server c'est que c'est bien le cas sinon saisissez
<code>/usr/lib/vino/vino-server &</code> Demandez de désactiver les effets graphiques (Système/préférences/apparences/onglet effet choisir **aucun**.\\
De votre côté, entrer
<code>vinagre localhost:1</code>Une demande d'autorisation doit apparaitre sur l'écran serveur, demandé à votre ami de valider.\\
Vous devriez être maintenant sur le pc de vote ami et ce dernier doit voir toute vos actions.


===== Quitter la connexion distante =====

Côté client, pour quitter votre accès à distance, quittez vinagre et les terminaux ouverts.
Côté serveur, vous pouvez arrêter le serveur ssh par
<code>sudo service ssh stop</code>
ou
<code>sudo /etc/init.d/ssh stop</code>et [[:vnc|vino-server]] par
<code>sudo killall vino-server</code> Quitter également les différents [[:terminal|terminaux]] si vous avez utilisé [[:screen]]

===== Sécurité =====

  * Afin de sécuriser un peu plus, il est possible de choisir la redirection d'un autre port que le 22 sur l'interface de gestion (exemple le 2764 vers 192.168.0.10:22). La liste des ports habituellement usités sont visible dans le fichier /etc/services. Choisissez en donc un qui n'y apparait.
  * si vous ne souhaitez pas que le "démon" [[:ssh]] ne soit activé à chaque démarrage (cas par défaut à l'installation su [[:Lucid]]), [[:tutoriel:comment_modifier_un_fichier|modifier le fichier]] /etc/init/ssh.conf et commenter (ajouter un # au début de) la ligne **//start on filesystem//**.
Pour reprendre la main les prochaine fois il faudra donc demander à votre ami de démarrer [[:ssh]] tel qu'indiqué dans les [[vnc_via_ssh#pré-requis#côté_serveur|pré-requis]].
  * Même chose pour vino-server, que vous pouvez retirer des applications au démarrage (Système/préférences). Penser à le démarrer en cas de besoin (cf [[vnc_via_ssh#retour_graphique_de_l_environnement|cette section]])
  *[[:ssh#authentification_par_un_systeme_de_cles_publiqueprive|SSH et clé distante]].\\

**Mise en page et suite plus tard**